package com.bird.file.charstream;

import java.io.File;
import java.io.IOException;

/**
 * @author sijunqiang
 * @data 2021/8/1 9:45
 * @description: 文件字符写出流 将内存数据 以字符的形式写出到文件中
 */
public class FileWriter {

    //- FileWriter(File file)： 创建一个新的 FileWriter，给定要读取的File对象。
    //- FileWriter(String fileName)： 创建一个新的 FileWriter，给定要读取的文件的名称。


    // 构造一个文件写出流对象
    public static void main1(String[] args) throws IOException {
        // 以file创建一个字符输出流
        File file = new File("c.txt");
        java.io.FileWriter fw = new java.io.FileWriter(file);

        // 使用文件名成直接构建字符写出流对象
        java.io.FileWriter fww = new java.io.FileWriter("c.txt");
    }

    // 写出数据 每次写出一个字符
    public static void main2(String[] args) throws IOException {

        // 构建一个字符输出流对象
        java.io.FileWriter fw = new java.io.FileWriter("file.txt");
        // 写出一个字符
        fw.write('v');
        //必须调用此方法 将数据刷出去，如果不调用该方法 数据就会保存到缓冲区中
        fw.flush();
        //关流
        fw.close();
        //- flush ：刷新缓冲区，流对象可以继续使用。
        //- close ：关闭流，释放系统资源。关闭前会刷新缓冲区
    }

    // 写出字符数组  以字符数组的方式写出数据
    public static void main3(String[] args) throws IOException {

        // 创建字符写出流对象
        java.io.FileWriter fw = new java.io.FileWriter("fw.txt");

        // 构建需要写出的字符数组
        String str = "狂奔的小乌龟";
        char[] chars = str.toCharArray();
        // 写出数据 从索引0开始 写出2个
        // fw.write(chars, 0, 2);
        // 写出全部字符数组
        fw.write(chars);
        fw.flush();
        fw.close();
    }

    // 写出字符串
    public static void main(String[] args) throws IOException {

        //构建字符输出流对象
        java.io.FileWriter fw = new java.io.FileWriter("fw.txt");
        String msg = "奋斗的小鸟";

        //将内存的数据写出到文件中
        fw.write(msg);

        // 刷新缓冲区
        fw.flush();
        fw.close();
    }

}
